﻿#include<iostream>
using namespace std;

//class Person
//{
//	public:
//	string _name;
//	static int _count;
//};
//int Person::_count = 0;
//
//class Student : public Person
//{
//	protected:
//	int _stuNum;
//};
//
//int main()
//{
//	Person p;
//	Student s;
//	// 这⾥的运⾏结果可以看到⾮静态成员_name的地址是不⼀样的
//	// 说明派⽣类继承下来了，⽗派⽣类对象各有⼀份
//	cout << &p._name << endl;
//	cout << &s._name << endl;
//	// 这⾥的运⾏结果可以看到静态成员_count的地址是⼀样的
//	// 说明派⽣类和基类共⽤同⼀份静态成员
//	cout << &p._count << endl;
//	cout << &s._count << endl;
//	// 公有的情况下，⽗派⽣类指定类域都可以访问静态成员
//	cout << Person::_count << endl;
//	cout << Student::_count << endl;
//	Person::_count++;
//
//	cout << p._count << endl;
//	cout << s._count << endl;
//
//	return 0;
//}

//class Person
//{
//	public:
//		Person(const char* name)
//			:_name(name)
//		{ }
//	protected:
//	string _name; // 姓名
//	
//};
//
//class Student: virtual public Person
//{
//	public:
//		Student(const char* name, int num = 1)
//			:Person(name)
//			,_num(num)
//		{ }
//	protected:
//	int _num; //学号
//};
//
//class Teacher : virtual public Person
//{
//	public:
//		Teacher(const char* name, int id = 2)
//			:Person(name)
//			,_id(id)
//		{ }
//	protected:
//	int _id; // 职⼯编号
//};
//
////菱形虚拟继承
//class Assistant : public Teacher, public Student
//{
//	public:
//		Assistant(const char* name1, const char* name2, const char* name3)
//			:Student(name1)
//			, Teacher(name2)
//			, Person(name3)//把Person当作一个单独的父类
//		{ }
//	protected:
//	string _majorCourse; // 主修课程
//};
//
//int main()
//{
//	Assistant a("张三", "李四", "王五");
//	cout << sizeof(a) << endl;
//
//	return 0;
//}

class Base1 { public: int _b1 = 1; };
class Base2 { public: int _b2 = 2; };
class Derive : public Base1, public Base2 { public: int _d = 3; };

int main()
{
	Derive d;
	Base1* p1 = &d;
	Base2* p2 = &d;
	Derive* p3 = &d;

	cout << "1" << endl;

	return 0;
}